<?php
class UserController extends Zend_Controller_Action {
	public function init() {
		
	}
	
	public function preDispatch() {
		$auth = Zend_Auth::getInstance ();
		if (! $auth->hasIdentity ()) { //Ktra Đã đăng nhập chưa
			if ($this->_request->getActionName () != 'dangnhap') {
				$this->_redirect ( '/user/dangnhap' );
			}
		} 
		else{
			if($this->_request->getActionName () == 'thanhtoan')
			{
				$cart = new Zend_Session_Namespace ( 'cart' );
				if(empty($cart->cart))
					$this->_redirect('cart/index');
			}
		}
	}
	
	public function dangnhapAction(){
		$form=new Application_Form_DangNhap();
		$this->view->formdangnhap=$form;
		if ($this->_request->isPost()) {
			//1.Goi ket noi voi Zend Db
			$db = Zend_Registry::get('connectDB');
			//2. Khoi tao Zend Autho
			$auth = Zend_Auth::getInstance ();
			//3. Khai bao bang va 2 cot se su dung so sanh trong qua tronh login
			$authAdapter = new Zend_Auth_Adapter_DbTable($db);
			$authAdapter->setTableName('khachhang')
			->setIdentityColumn('username')
			->setCredentialColumn('password');
				
			//4. Lay gia tri duoc gui qua tu FORM
			$uname = $this->_request->getParam('username');
			$paswd = $this->_request->getParam('password');
			if($uname==null||$paswd==null)
				return;
				
			//5. Dua vao so sanh voi du lieu khai bao o muc 3
			$authAdapter->setIdentity($uname);
			$authAdapter->setCredential(md5($paswd));
				
			//6. Kiem tra trang thai cua user neu status = 1 moi duoc login(dieu kien phu)
			$select = $authAdapter->getDbSelect();
			$select->where('trangthai = 2');
		
			//7. Lay ket qua truy van
			$result = $auth->authenticate($authAdapter);
				
			$flag = false;
			$ad = false;
			if ($result->isValid()) {
				//8. Lay nhung du lieu can thiet trong bang users neu login thanh cong
				$data = $authAdapter->getResultRowObject(null, array('password'));
		
				//9. Luu  nhung du lieu cua member vao session
				$auth->getStorage()->write($data);
				$flag = true;
				if($data->role==1)
					$ad = true;
			}
			if ($flag == true) {
				//Nếu là admin thì redirect sang trang admin
				if($ad)
					$this->_redirect('/admin/index');
				//Nếu là user bình thường thì redirect sang trang chủ
				else
					$this->_redirect('/index/index');
			}else{
				//$error = "Sai username hoặc mật khẩu!";
				echo "Sai username hoặc mật khẩu!";
			}
		}
	}
	
	public function datriengAction(){
		$auth = Zend_Auth::getInstance();
		$infoUser = $auth->getIdentity();
		if(!empty($infoUser->id)){
			if($this->getRequest()->isPost())
			{
				$formData = $this->getRequest()->getPost();
				$tongtienhoa=0;
				$hoa_table=new Application_Model_Hoa();
				foreach ($formData as $key=>$value){
					if((int)$key>0)
					{
						$hoa=$hoa_table->gethoa($key);
						$tongtienhoa+=($value*$hoa['dongia']);
					}
				}
				if(is_numeric($formData['sldat']))
				{
					$tengiohoa=$formData['tengiohoa'];
					$dongiaban=$tongtienhoa;
					$giohoa= new Application_Model_GioHoa();
					$giohoa->addGioHoadatrieng($tengiohoa,$dongiaban);
					//tạo các chi tiết giỏ hoa ở đây (dùng hàm insertCTGioHoa)
					$giohoa_id=$giohoa->getLastID();
					$ctgiohoa_table=new Application_Model_CTGioHoa();
					foreach ($formData as $key=>$value){
						if((int)$key>0)
						{
							if($value>0)
								$ctgiohoa_table->insertCTGioHoa($key, $giohoa_id, $value);
						}
					}
					$cart = new Zend_Session_Namespace ( 'cart' );
					$cart->cart[$giohoa_id]=$formData['sldat'];
					$this->_redirect('cart/index');
				}else{
					echo "<script>alert('số lượng đặt phải là kiểu số!!!')</script>";
				}
			}
		}else {
			echo '<script> alert ("Vui lòng đăng nhập trước khi sử dụng chức năng này"); </script>';
		}
	}
	
	public function thanhtoanAction(){
		$form = new Application_Form_Payment();
		$this->view->pay=$form;
		$cart = new Zend_Session_Namespace ( 'cart' );
		$cart_change = new Zend_Session_Namespace ( 'change' );
		//tạo một don dat hàng
		$auth = Zend_Auth::getInstance();
		$infoUser = $auth->getIdentity();
		if($this->getRequest()->isPost())
		{
			$formData = $this->getRequest()->getPost();
			try {
				if ($form->isValid($formData)) {
					$dondathang= new Application_Model_DonDatHang();
					date_default_timezone_set('UTC');
					$kh_id=$infoUser->id;
					$ngaylap=gmdate("Y/m/d", time()+7*3600);
					$dondathang->addDonDatHang($kh_id, $ngaylap, 'Tiền mặt', $formData);
					$lastrow= $dondathang->getLastId();
					$id=$lastrow[0]->id;
					$ct_ddh=new Application_Model_CTDonDatHang();
					$giohoa_table=new Application_Model_GioHoa();
					$phieuyeucau_thaydoi=new Application_Model_PhieuYeuCauThayDoi();
					$ct_giohoa=new Application_Model_CTGioHoa();
					$thieuhang="";
					foreach ($cart->cart as $key=>$motsanpham)
					{
						//tạo chi tiết đơn đặt hàng + update số lượng
						$data=$giohoa_table->getGioHoa($key);
						if($data['datrieng']==0)//giỏ hoa do cửa hàng cắm sẵn
						{
							if($data['slton']>=$motsanpham)
							{
								$ct_ddh->addCTDonDatHang($id, $key, $motsanpham);
								//tạo yêu cầu thay đổi nếu có
								if(!empty($cart_change->change))
									foreach ($cart_change->change as $oneitem)
									{
										if($oneitem['giohoa_id']==$key)
										{
											//new 1 dòng mới
											$sldatabase=$ct_giohoa->getSoluonghoa($oneitem['hoa_id'], $key);
											$slthaydoi=abs(($sldatabase-$oneitem['slhoa']));
											if($slthaydoi==0)
											{
												//trường hợp khách vào trang thay đổi nhưng số lượng k đổi
											}
											else
											{
												$flag_them=true;
												if(($sldatabase-$oneitem['slhoa'])>0)
													$flag_them=false;
												$phieuyeucau_thaydoi->addPhieuYeuCauThayDoi($id, $key, $oneitem['hoa_id'], $flag_them, $slthaydoi);
											}
										}
											
									}

									//end
									$data['slton']=$data['slton']-$motsanpham;
									$giohoa_table->updateGiohoabyarray($data);
							}
							else
							{
								$thieuhang.=$data['tengiohoa'].' ,';
							}
						}else //giỏ hoa do khách đặt riêng
						{
							$ct_ddh->addCTDonDatHang($id, $key, $motsanpham);
							//tạo yêu cầu thay đổi nếu có
							if(!empty($cart_change->change))
								foreach ($cart_change->change as $oneitem)
								{
									if($oneitem['giohoa_id']==$key)
									{
										//new 1 dòng mới
										$sldatabase=$ct_giohoa->getSoluonghoa($oneitem['hoa_id'], $key);
										$slthaydoi=abs(($sldatabase-$oneitem['slhoa']));
										if($slthaydoi==0)
										{
											//trường hợp khách vào trang thay đổi nhưng số lượng k đổi
										}
										else
										{
											$flag_them=true;
											if(($sldatabase-$oneitem['slhoa'])>0)
												$flag_them=false;
											$phieuyeucau_thaydoi->addPhieuYeuCauThayDoi($id, $key, $oneitem['hoa_id'], $flag_them, $slthaydoi);
										}
									}

								}
						}
					}
					//hủy session
					Zend_Session::destroy();
					if($thieuhang!=""){
						echo "<script> alert('";
						echo "Hiện tại cửa hàng không đủ số lượng hàng cung cấp cho các sản phẩm :".$thieuhang;
						echo "Do đó các sản phẩm trên chưa được đặt mua.Quý khách vui lòng giảm số lượng mua hoặc chọn sản phẩm khác";
						echo "');</script>";
					}
					else
						$this->_redirect ( '/index/index' );
				} else {
					$form->populate($formData);
				}
			}catch (Exception $ex)
			{
				echo 'Cannot add oder . Error :'.$ex->getMessage();
			}
		}
	}
}